package com.dhcc.DRGsHosp.facade;

import java.util.List;
import java.util.Map;

import org.dayatang.utils.Page;
import org.openkoala.koala.commons.InvokeResult;

import com.dhcc.DRGsHosp.facade.dto.DepartmentDTO;
import com.dhcc.DRGsHosp.facade.dto.IndexCalDTO;

public interface DepartmentFacade {

	public InvokeResult creatDepartment(DepartmentDTO department);
	
	public InvokeResult updateDepartment(DepartmentDTO department);
	
	public InvokeResult removeDepartment(String depCode);
	
	public InvokeResult removeDepartments(String[] depCodes);
	
	public List<DepartmentDTO> findAllDepartment();
	
	public Page<DepartmentDTO> pageQueryDepartment(DepartmentDTO department, int currentPage, int pageSize);
	
	public DepartmentDTO getCurrentUserDepartment(String roleName);

	/**
	 * @methodname    :findAllDep
	 * @description   : 
	 * @param         :
	 * @author        :fulianxia
	 * @return        :
	 * @date          :2015年5月15日
	 */
	public Object findAllDep(DepartmentDTO dto);

	/**
	 * @methodname    :isOrderExist
	 * @description   : 
	 * @param         :
	 * @author        :fulianxia
	 * @return        :
	 * @date          :2015年7月1日
	 */
	public Boolean isOrderExist(String order,String code);
   /**
    * 
    * @methodname    :queryHoptalCode
    * @description   : 获取医院code
    * @param         :
    * @author        :liuhongjun
    * @return        :
    * @date          :2015年12月17日
    */
	public List<Object[]> queryHoptalCode();
	
	/**
	 * 
	 * @methodname    :getNewAddDepNames
	 * @description   : 
	 * @param         :
	 * @author        :mazhaoyan
	 * @return        :
	 * @date          :2016年5月18日
	 */
	public List<String> getNewAddDepNames();
	
	/**
	 * 
	 * @methodname    :saveSelCliSpec
	 * @description   : 
	 * @param         :
	 * @author        : chenhanlin
	 * @param verCode 
	 * @param		  : cliSpecArr 
	 * @param 		  : depCode 
	 * @return        :
	 * @date          :2016年12月14日
	 */
	public Boolean saveSelCliSpec(String depCode, String verCode, String[] cliSpecArr);
	/**
	 * 
	 * @methodname    : 查询科室选的临床专业
	 * @description   : 
	 * @param         :
	 * @author        : chenhanlin
	 * @param 		  : depCode 
	 * @return        :
	 * @date          :2016年12月14日
	 */
	public List<Map<String,Object>> findSpecBydepCode(String depCode);
	/**
	 * 
	 * @methodname    : 查询科室覆盖的ADRG数量
	 * @description   : 
	 * @param         :
	 * @author        : chenhanlin
	 * @return        :
	 * @date          :2016年12月14日
	 */
	public Map<String,Object> findDRGCount();
	/**
	 * 
	 * @methodname    : 判断科室有没有选临床专业
	 * @description   : 
	 * @param         :
	 * @author        : chenhanlin
	 * @return        :
	 * @date          :2016年12月14日
	 */
	public boolean hasCliSpec(String depCodes) ;

	/**
	 * @methodname    :findDepDRGs
	 * @description   :查询科室理论覆盖病组
	 * @param         :
	 * @author        :lileizheng
	 * @return        :
	 * @date          :2017年1月5日
	 */
	public InvokeResult findDepDRGs(String depCode);
	/**
	 * 根据科室编码查询科室
	 * @param depCode
	 * @return
	 */
	public DepartmentDTO findDepartmentByDepCode(String depCode);
	/**
	 *  查询科室医生
	 *  findDoctorInDep.  
	 *  @Description：
	 *  @Author ChenHanlin
	 *  @param depCode
	 *  @return 
	 *  @Date:2017年11月3日下午3:11:23
	 */
	public InvokeResult findDoctorInDep(String depCode);
	
	/**
	 *  查询科室组，科室，病区的编码和描述
	 *  findAllDepRelatedInfo.  
	 *  @Description：
	 *  @Author ChenHanlin
	 *  @return 
	 *  @Date:2017年12月14日上午10:37:44
	 */
	public List<Map<String,Object>> findAllDepRelatedInfo();
/**
 *  @desp  ：根据条件获取科室信息
 *  @Author： lhj
 *  @param dto
 *  @return
 *  @Date  :2018年1月26日下午5:06:35
 */
	public Object findAllDepByHospCode(IndexCalDTO dto);
	/**
	 * 
	 *  findAllHosp.  
	 *  @Description：查询所有院区
	 *  @Author WENYI
	 *  @return 
	 *  @Date:2018年1月26日下午3:10:13
	 */
	public List<Map<String,Object>> findAllHosp();
	/**
	 * 
	 *  updateBaseInfo.  
	 *  @Description：更新科室所属的院区code
	 *  @Author mazhaoyan
	 *  @param depCode
	 *  @param hospCode 
	 *  @Date:2018年3月9日下午4:34:11
	 */
	public void updateBaseInfo(String depCode,String hospCode);
	/**
	 * 
	 * @Title: synchroDepAndHosp  
	 * @Description:科室设置中一键同步
	 * @param @return   
	 * @return InvokeResult  
	 * @author shaozhiyuan
	 * @date 2018年3月13日  
	 * @version V3.1.0 
	 * @throws
	 */
	public InvokeResult synchroDepAndHosp(String[] depCodes);
	/**
	 * 
	 *  getDepNotification.  
	 *  @Description：查询没有配置科室组的科室
	 *  @Author WENYI
	 *  @return 
	 *  @Date:2018年3月13日下午6:30:41
	 */
	public List<String> getDepNotification();
	/**
	 * 
	 *  getHospNotification.  
	 *  @Description：查询没有配置院区的科室
	 *  @Author WENYI
	 *  @return 
	 *  @Date:2018年9月10日下午6:07:57
	 */
	public List<String> getHospNotification();
	/**
	 * 
	 *  departmentImport.  
	 *  @Description：科室数据批量导入
	 *  @Author WENYI
	 *  @param filePath
	 *  @return 
	 *  @Date:2018年3月14日下午3:58:23
	 */
	public InvokeResult departmentImport(String filePath);
	
	/**
	 *  查询科室应诊疗病组
	 *  findDepartmentDRGs.  
	 *  @param dto 
	 *  @Description：
	 *  @Author ChenHanlin
	 *  @return 
	 *  @Date:2018年3月23日上午11:34:08
	 */
	public List<Map<String, Object>> findDepartmentDRGs(IndexCalDTO dto);
}

